package com.eps.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import com.eps.entity.Empresa;

/**
 *
 * @author CAROLINA
 */
@Entity
@Table(name = "UbicacionSuministro")
@NamedQueries({@NamedQuery(name = "UbicacionSuministro.findAll", query = "SELECT u FROM UbicacionSuministro u"), @NamedQuery(name = "UbicacionSuministro.findByIdZona", query = "SELECT u FROM UbicacionSuministro u WHERE u.idZona = :idZona"), @NamedQuery(name = "UbicacionSuministro.findByIdAlmacen", query = "SELECT u FROM UbicacionSuministro u WHERE u.idAlmacen = :idAlmacen"), @NamedQuery(name = "UbicacionSuministro.findByIdSubalmacen", query = "SELECT u FROM UbicacionSuministro u WHERE u.idSubalmacen = :idSubalmacen"), @NamedQuery(name = "UbicacionSuministro.findByIdAmbiente", query = "SELECT u FROM UbicacionSuministro u WHERE u.idAmbiente = :idAmbiente"), @NamedQuery(name = "UbicacionSuministro.findByIdPabellon", query = "SELECT u FROM UbicacionSuministro u WHERE u.idPabellon = :idPabellon"), @NamedQuery(name = "UbicacionSuministro.findByIdEstante", query = "SELECT u FROM UbicacionSuministro u WHERE u.idEstante = :idEstante"), @NamedQuery(name = "UbicacionSuministro.findByIdCasilla", query = "SELECT u FROM UbicacionSuministro u WHERE u.ubicacionSuministroPK.idCasilla = :idCasilla"), @NamedQuery(name = "UbicacionSuministro.findByIdMovimiento", query = "SELECT u FROM UbicacionSuministro u WHERE u.ubicacionSuministroPK.idMovimiento = :idMovimiento"), @NamedQuery(name = "UbicacionSuministro.findByIDsuministro", query = "SELECT u FROM UbicacionSuministro u WHERE u.ubicacionSuministroPK.iDsuministro = :iDsuministro"), @NamedQuery(name = "UbicacionSuministro.findByCantidad", query = "SELECT u FROM UbicacionSuministro u WHERE u.cantidad = :cantidad"), @NamedQuery(name = "UbicacionSuministro.findByFechaIngreso", query = "SELECT u FROM UbicacionSuministro u WHERE u.fechaIngreso = :fechaIngreso"), @NamedQuery(name = "UbicacionSuministro.findByPrecio", query = "SELECT u FROM UbicacionSuministro u WHERE u.precio = :precio"), @NamedQuery(name = "UbicacionSuministro.findByMonto", query = "SELECT u FROM UbicacionSuministro u WHERE u.monto = :monto")})
public class UbicacionSuministro implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected UbicacionSuministroPK ubicacionSuministroPK;
    @Column(name = "id_zona")
    private String idZona;
    @Column(name = "id_almacen")
    private String idAlmacen;
    @Column(name = "id_subalmacen")
    private String idSubalmacen;
    @Column(name = "id_ambiente")
    private Long idAmbiente;
    @Column(name = "id_pabellon")
    private Long idPabellon;
    @Column(name = "id_estante")
    private Long idEstante;
    @Column(name = "cantidad")
    private BigDecimal cantidad;
    @Column(name = "fechaIngreso")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaIngreso;
    @Column(name = "precio")
    private BigDecimal precio;
    @Column(name = "monto")
    private BigDecimal monto;
    @JoinColumn(name = "id_casilla", referencedColumnName = "id_casilla", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Casilla casilla;
    @Column(name = "usuario")
    private String usuario;
    @Column(name = "mac")
    private String mac;
    @Column(name = "id_proyecto")
    private String id_proyecto;
    @JoinColumn(name = "id_empresa", referencedColumnName = "id_empresa")
    @ManyToOne(optional = false)
    private Empresa empresa;
    @Column(name = "fecha_operacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaOperacion;
    public UbicacionSuministro() {
    }

    public UbicacionSuministro(UbicacionSuministroPK ubicacionSuministroPK) {
        this.ubicacionSuministroPK = ubicacionSuministroPK;
    }

    public UbicacionSuministro(long idCasilla, String idMovimiento, String iDsuministro,boolean proyecto) {
        this.ubicacionSuministroPK = new UbicacionSuministroPK(idCasilla, idMovimiento, iDsuministro, proyecto);
    }

    public UbicacionSuministroPK getUbicacionSuministroPK() {
        return ubicacionSuministroPK;
    }

    public void setUbicacionSuministroPK(UbicacionSuministroPK ubicacionSuministroPK) {
        this.ubicacionSuministroPK = ubicacionSuministroPK;
    }

    public Empresa getEmpresa() {
        return empresa;
    }

    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }


    public String getMac() {
        return mac;
    }

    public void setMac(String mac) {
        this.mac = mac;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getIdZona() {
        return idZona;
    }

    public void setIdZona(String idZona) {
        this.idZona = idZona;
    }

    public String getIdAlmacen() {
        return idAlmacen;
    }

    public void setIdAlmacen(String idAlmacen) {
        this.idAlmacen = idAlmacen;
    }

    public String getIdSubalmacen() {
        return idSubalmacen;
    }

    public void setIdSubalmacen(String idSubalmacen) {
        this.idSubalmacen = idSubalmacen;
    }

    public Long getIdAmbiente() {
        return idAmbiente;
    }

    public void setIdAmbiente(Long idAmbiente) {
        this.idAmbiente = idAmbiente;
    }

    public Long getIdPabellon() {
        return idPabellon;
    }

    public void setIdPabellon(Long idPabellon) {
        this.idPabellon = idPabellon;
    }

    public Long getIdEstante() {
        return idEstante;
    }

    public void setIdEstante(Long idEstante) {
        this.idEstante = idEstante;
    }

    public BigDecimal getCantidad() {
        return cantidad;
    }

    public void setCantidad(BigDecimal cantidad) {
        this.cantidad = cantidad;
    }

    public Date getFechaIngreso() {
        return fechaIngreso;
    }

    public void setFechaIngreso(Date fechaIngreso) {
        this.fechaIngreso = fechaIngreso;
    }

    public BigDecimal getPrecio() {
        return precio;
    }

    public void setPrecio(BigDecimal precio) {
        this.precio = precio;
    }

    public BigDecimal getMonto() {
        return monto;
    }

    public void setMonto(BigDecimal monto) {
        this.monto = monto;
    }

    public Casilla getCasilla() {
        return casilla;
    }

    public void setCasilla(Casilla casilla) {
        this.casilla = casilla;
    }

    public Date getFechaOperacion() {
        return fechaOperacion;
    }

    public void setFechaOperacion(Date fechaOperacion) {
        this.fechaOperacion = fechaOperacion;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (ubicacionSuministroPK != null ? ubicacionSuministroPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {

        if (!(object instanceof UbicacionSuministro)) {
            return false;
        }
        UbicacionSuministro other = (UbicacionSuministro) object;
        if ((this.ubicacionSuministroPK == null && other.ubicacionSuministroPK != null) || (this.ubicacionSuministroPK != null && !this.ubicacionSuministroPK.equals(other.ubicacionSuministroPK))) {
            return false;
        }
        return true;
    }

    public String getId_proyecto() {
        return id_proyecto;
    }

    public void setId_proyecto(String id_proyecto) {
        this.id_proyecto = id_proyecto;
    }


    @Override
    public String toString() {
        return "suministros.ejb30.entity.UbicacionSuministro[ubicacionSuministroPK=" + ubicacionSuministroPK + "]";
    }

}
